package com.ahorresas.modelo.daos;

import com.ahorresas.conexion.Conexion;
import com.ahorresas.modelo.beans.PersonaBean;
import com.ahorresas.modelo.sqls.PersonaSql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class PersonaDao {
    
    Conexion conexion = new Conexion();
    Connection con;
    PersonaSql sql = new PersonaSql();
    
    public PersonaBean buscarPersona(String identificacionPersona){
        con = conexion.getConexion();
        PersonaBean persona = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.buscarPersona());
            ps.setString(1, identificacionPersona);
            
            ResultSet resultado = ps.executeQuery();
            if(resultado.next()){
                persona = new PersonaBean();
                persona.setIdentificacion(resultado.getString("identificacion"));
                persona.setTipoDocumento(resultado.getString("tipo_documento"));
                persona.setNombre(resultado.getString("nombre"));
                persona.setApellidoUno(resultado.getString("apellido_uno"));
                persona.setApellidoDos(resultado.getString("apellido_dos"));
                persona.setDireccion(resultado.getString("direccion"));
                persona.setTelefono(resultado.getString("telefono"));
                persona.setCelular(resultado.getString("celular"));
                persona.setCorreo(resultado.getString("correo"));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        finally{
            conexion.cerrarConexion(con);
        }
        return persona;
    }
    
    public List<PersonaBean> listarPersonas(){
        con = conexion.getConexion();
        List<PersonaBean> listaPersonas = new ArrayList<>();
        PersonaBean persona = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.listarPersonas());
            ResultSet resultado = ps.executeQuery();
            while(resultado.next()){
                persona = new PersonaBean();
                persona.setIdentificacion(resultado.getString("identificacion"));
                persona.setTipoDocumento(resultado.getString("tipo_documento"));
                persona.setNombre(resultado.getString("nombre"));
                persona.setApellidoUno(resultado.getString("apellido_uno"));
                persona.setApellidoDos(resultado.getString("apellido_dos"));
                persona.setDireccion(resultado.getString("direccion"));
                persona.setTelefono(resultado.getString("telefono"));
                persona.setCelular(resultado.getString("celular"));
                persona.setCorreo(resultado.getString("correo"));
                
                listaPersonas.add(persona);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally{
            conexion.cerrarConexion(con);
        }
        return listaPersonas;
    }
    
    public int crearPersona(PersonaBean persona){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.crearPersona());
            ps.setString(1, persona.getIdentificacion());
            ps.setString(2, persona.getTipoDocumento());
            ps.setString(3, persona.getNombre());
            ps.setString(4, persona.getApellidoUno());
            ps.setString(5, persona.getApellidoDos());
            ps.setString(6, persona.getDireccion());
            ps.setString(7, persona.getTelefono());
            ps.setString(8, persona.getCelular());
            ps.setString(9, persona.getCorreo());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        } 
        return resultado;
    }
    
    public int modificarPersona(PersonaBean persona){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.modificarPersona());
            ps.setString(1, persona.getTipoDocumento());
            ps.setString(2, persona.getNombre());
            ps.setString(3, persona.getApellidoUno());
            ps.setString(4, persona.getApellidoDos());
            ps.setString(5, persona.getDireccion());
            ps.setString(6, persona.getTelefono());
            ps.setString(7, persona.getCelular());
            ps.setString(8, persona.getCorreo());
            ps.setString(9, persona.getIdentificacion());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
    
    public int eliminarPersona(String identificacionPersona){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.eliminarPersona());
            ps.setString(1, identificacionPersona);
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
}